#ifndef BAG_DEALER_SENSORSFUSER_H
#define BAG_DEALER_SENSORSFUSER_H
#include <vector>
#include <ros/ros.h>
#include <string>
#include <sensor_msgs/Image.h>
#include <sensor_msgs/Imu.h>
#include <sensor_msgs/PointCloud2.h>
#include <sensor_msgs/LaserScan.h>
#include <geometry_msgs/Twist.h>
#include <message_filters/synchronizer.h>
#include <message_filters/subscriber.h>
#include <message_filters/sync_policies/approximate_time.h>
#include <boost/bind/bind.hpp>

#include <cv_bridge/cv_bridge.h>
#include <opencv2/opencv.hpp>

//template<typename T>

class SensorsFuser {
public:
    SensorsFuser();
    ~SensorsFuser();

    void callback(const sensor_msgs::ImageConstPtr& img_front_msg,
                  const sensor_msgs::ImageConstPtr& img_left_msg,
                  const sensor_msgs::ImageConstPtr& img_right_msg,
                  const sensor_msgs::PointCloud2ConstPtr& pc_msg);

private:
    ros::Publisher frontPub;
    ros::Publisher leftPub;
    ros::Publisher rightPub;
    ros::Publisher imuPub;
    ros::Publisher laserScanPub;
    ros::Publisher lidarPub;
    ros::Publisher twistPub;
    ros::NodeHandle nh_;
};


#endif //BAG_DEALER_SENSORSFUSER_H
